package com.mlh.heap;

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * @author 缪林辉
 * @date 2024/9/4 16:22
 * @DESCRIPTION
 */
//给定整数数组 nums 和整数 k，请返回数组中第 k 个最大的元素。
// 请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。
public class 数组中的第K个最大元素 {
    //用堆排序来做
    //也可以用快排来做
    //两个时间复杂度都是O(nlogn)
    public int method1(int[] nums, int k) {
        Heap heap = new Heap();
        heap.heapify(nums);
        for (int i = 0; i < 7; i++) {
            int max = heap.getMax(nums, nums.length - 1 - i);
            if(i==6){
                return max;
            }
        }
        return 0;
    }

    public int practice(int[] nums, int k){
        PriorityQueue<Integer>head=new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        for (int i = 0; i < nums.length; i++) {
            head.add(nums[i]);
        }
        for (int i = 0; i < k-1; i++) {
            head.poll();
        }
        return head.poll();
    }
}
